From: Jan Beulich Date: Fri, 1 Jul 2011 19:45:21 +0000 (+0100) Subject: x86: make domain_spin_lock_irq_desc() a wrapper of pirq_spin_lock_irq_desc() X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~10079 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=a03507b3b111cda4d2db046a792463a96d3e7b9f;p=xen.git x86: make domain_spin_lock_irq_desc() a wrapper of pirq_spin_lock_irq_desc() ...and drop the now unused struct domain * parameter of the latter. Signed-off-by: Jan Beulich --- diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index fd02041229..1a5bc5b6f4 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -258,7 +258,7 @@ static int hvm_migrate_pirq(struct domain *d, struct hvm_pirq_dpci *pirq_dpci, (pirq_dpci->gmsi.dest_vcpu_id == v->vcpu_id) ) { struct irq_desc *desc = - pirq_spin_lock_irq_desc(d, dpci_pirq(pirq_dpci), NULL); + pirq_spin_lock_irq_desc(dpci_pirq(pirq_dpci), NULL); if ( !desc ) return 0; diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c index f50ec88b79..9db092befd 100644 --- a/xen/arch/x86/hvm/vmsi.c +++ b/xen/arch/x86/hvm/vmsi.c @@ -375,7 +375,7 @@ int msixtbl_pt_register(struct domain *d, struct pirq *pirq, uint64_t gtable) if ( !new_entry ) return -ENOMEM; - irq_desc = pirq_spin_lock_irq_desc(d, pirq, NULL); + irq_desc = pirq_spin_lock_irq_desc(pirq, NULL); if ( !irq_desc ) { xfree(new_entry); @@ -422,7 +422,7 @@ void msixtbl_pt_unregister(struct domain *d, struct pirq *pirq) ASSERT(spin_is_locked(&pcidevs_lock)); ASSERT(spin_is_locked(&d->event_lock)); - irq_desc = pirq_spin_lock_irq_desc(d, pirq, NULL); + irq_desc = pirq_spin_lock_irq_desc(pirq, NULL); if ( !irq_desc ) return; diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index b46fa9b8cb..ac8bfa9d79 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -946,32 +946,16 @@ static void __do_IRQ_guest(int irq) struct irq_desc *domain_spin_lock_irq_desc( struct domain *d, int pirq, unsigned long *pflags) { - int irq; - unsigned long flags; - struct irq_desc *desc; + const struct pirq *info = pirq_info(d, pirq); - for ( ; ; ) - { - irq = domain_pirq_to_irq(d, pirq); - if ( irq <= 0 ) - return NULL; - desc = irq_to_desc(irq); - spin_lock_irqsave(&desc->lock, flags); - if ( irq == domain_pirq_to_irq(d, pirq) ) - break; - spin_unlock_irqrestore(&desc->lock, flags); - } - - if ( pflags != NULL ) - *pflags = flags; - return desc; + return info ? pirq_spin_lock_irq_desc(info, pflags) : NULL; } /* * Same with struct pirq already looked up. */ struct irq_desc *pirq_spin_lock_irq_desc( - struct domain *d, const struct pirq *pirq, unsigned long *pflags) + const struct pirq *pirq, unsigned long *pflags) { struct irq_desc *desc; unsigned long flags; @@ -1179,7 +1163,7 @@ void pirq_guest_eoi(struct domain *d, struct pirq *pirq) struct irq_desc *desc; ASSERT(local_irq_is_enabled()); - desc = pirq_spin_lock_irq_desc(d, pirq, NULL); + desc = pirq_spin_lock_irq_desc(pirq, NULL); if ( desc ) desc_guest_eoi(d, desc, pirq); } @@ -1338,7 +1322,7 @@ int pirq_guest_bind(struct vcpu *v, struct pirq *pirq, int will_share) BUG_ON(!local_irq_is_enabled()); retry: - desc = pirq_spin_lock_irq_desc(v->domain, pirq, NULL); + desc = pirq_spin_lock_irq_desc(pirq, NULL); if ( desc == NULL ) { rc = -EINVAL; @@ -1541,7 +1525,7 @@ void pirq_guest_unbind(struct domain *d, struct pirq *pirq) WARN_ON(!spin_is_locked(&d->event_lock)); BUG_ON(!local_irq_is_enabled()); - desc = pirq_spin_lock_irq_desc(d, pirq, NULL); + desc = pirq_spin_lock_irq_desc(pirq, NULL); if ( desc == NULL ) { @@ -1576,7 +1560,7 @@ static int pirq_guest_force_unbind(struct domain *d, struct pirq *pirq) WARN_ON(!spin_is_locked(&d->event_lock)); BUG_ON(!local_irq_is_enabled()); - desc = pirq_spin_lock_irq_desc(d, pirq, NULL); + desc = pirq_spin_lock_irq_desc(pirq, NULL); BUG_ON(desc == NULL); if ( !(desc->status & IRQ_GUEST) ) diff --git a/xen/drivers/passthrough/io.c b/xen/drivers/passthrough/io.c index 5f39d6b934..13260dc768 100644 --- a/xen/drivers/passthrough/io.c +++ b/xen/drivers/passthrough/io.c @@ -432,7 +432,7 @@ static void __msi_pirq_eoi(struct domain *d, struct hvm_pirq_dpci *pirq_dpci) struct pirq *pirq = dpci_pirq(pirq_dpci); BUG_ON(!local_irq_is_enabled()); - desc = pirq_spin_lock_irq_desc(d, pirq, NULL); + desc = pirq_spin_lock_irq_desc(pirq, NULL); if ( !desc ) return; diff --git a/xen/include/xen/irq.h b/xen/include/xen/irq.h index b771fa2d75..a9193e6d61 100644 --- a/xen/include/xen/irq.h +++ b/xen/include/xen/irq.h @@ -171,7 +171,7 @@ extern void pirq_set_affinity(struct domain *d, int irq, const cpumask_t *); extern irq_desc_t *domain_spin_lock_irq_desc( struct domain *d, int irq, unsigned long *pflags); extern irq_desc_t *pirq_spin_lock_irq_desc( - struct domain *, const struct pirq *, unsigned long *pflags); + const struct pirq *, unsigned long *pflags); static inline void set_native_irq_info(unsigned int irq, const cpumask_t *mask) {